Middle tier applications, also referred to as application servers, typically sit on top of a wide range of existing enterprise systems such as database management systems, transaction monitors, and naming and directory services. Many of these application servers are built based on standard specifications such as the Java 2 Platform, Enterprise Edition (J2EE) to provide portability and scalability to applications managing and accessing various enterprise systems.
J2EE, for example, defines a specification for developing enterprise applications to follow as a standard. J2EE bases the enterprise applications on standardized, modular components, by providing a set of services to those components, and by handling many details of application behavior automatically. J2EE includes support for Enterprise JavaBeans (EJB) components, Java Servlets API, JavaServer Pages and Extended Marked-up Language (XML) technology.
Accordingly, an application built conforming to the J2EE standard specification may be deployed to an application server that supports the J2EE standards, thus allowing the deployed application to manage and access various resources provided by the underlying enterprise systems via the application server. Briefly, deployment is the process of distributing and configuring various part of application programs such as J2EE applications to appropriate locations in application servers.
Although J2EE provides standard specifications for application servers and applications running on these application servers, each application must be deployed according to vendor or application server provider's specific criteria. In most cases, each vendor supplying the application server also provides deployment methods and tools for deploying applications to its application server specifically. Further, applications developed in a particular application server development environment are limited to deploying to that application server only. Thus, to deploy applications to different application servers, multiple development environment tools may need to be used to develop the applications for deploying.
Different deployment methods for different application servers mean that users need to learn multiple methods of deployment and keep up with numerous and changing deployment tools provided by different application server providers. Similarly, users need to learn and use multiple development environment tools for developing the applications for deployment. Accordingly, what is needed is a universal deployment tool that would allow a user to deploy applications and components built using any development environment tools to be assembled and deployed to any other application server.